package com.xq.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.security.SignatureException;
import java.util.Date;
import java.util.UUID;

public class JwtUtils {

    /**
     * 生成JWT的密钥
     */
    private static final String SECRET = "IJGTRERDLKMHBVFGHYYHHV";


    /**
     * 创建Token
     */
    public static JwtBuilder createToken(String username){
        JwtBuilder jwt = Jwts.builder()
                //设置唯一标识ID
                .setId(UUID.randomUUID().toString())
                //签发时间
                .setIssuedAt(new Date())
                //签发主题
                .setSubject(username)
                //签发者信息
                .setIssuer("woDiChaoChao")
                //加密方式和密钥
                .signWith(SignatureAlgorithm.HS256, SECRET);
        return jwt;
    }


    /**
     * 验证Token
     */
    public static Claims validateToken(String token)  {
            // 解析并验证Token
        Claims claims = Jwts.parser()
                .setSigningKey(SECRET)  // 设置用于签名的密钥
                .parseClaimsJws(token)   // 解析Token
                .getBody();// 获取Token中的主体Claims
        return claims;
    }

}
